package dletc.demo;

import java.io.FileNotFoundException;

/**

5.1 try---catch语句块的注意事项：

     1) finally可选
     2） 异常提示有两种方法：
              A ：System.out.println(e.getMessage())
              java后台打印异常堆栈追踪信息的时候，采用了异步线程的方法打印的。
              B : e.printStackTrace() 打印完整的异常信息
              
     3） try结构中声明的变量，出了try语句块之后就不能在被使用（局部变量）
     4）catch后面的小括号中的类型可以是具体异常类型，也可以是该类型的父类型，因为多态机制。
     5）catch可以写多个，建议catch的时候，精确的一个一个处理，这样有利于程序的调试
     6）catch写多个时，从上至下，必须遵守从小到大，有父子类关系，父类一定放在最下面，否则报错
     7） 一个catch中也可以写多个异常对象   用短路或  分开  JDK8新特性。
      catch (ClassCastException | FileNotFoundException e) {
			
			e.printStackTrace();
		}
*/

public class demo03 {

	public static void main(String[] args) {
		String s = "123";
		
		s = "abc";
		
		//提升到全局的位置，这样整个代码区域才能使用num变量
		int num = 0;
		
		//处理异常
		try{
			
			num = Integer.parseInt(s);
			
		}catch (NullPointerException e) {
			
			System.out.println("出现空指针异常，不要着急");
			
		}catch (NumberFormatException e) {
			
			//处理异常的代码
			//System.out.println("出现数值转换异常，不要着急");
			
			//异常自带的一个处理异常信息的方法
			//System.out.println(e.getMessage());
			
			e.printStackTrace();//使用这个方法打印异常提示
			
		}catch(Exception e){//添加父类的异常，必须放在最下面
			System.out.println("出现了异常，不要着急");
		}
		
		
		//打印num;
		System.out.println(num);
		
		System.out.println("后续代码");

	}

}
